package Offer;

/*
    分析：题目的意思是：输入一个数n，然后将其转成二进制之后，去判断1的个数
         可以利用短路与&运算，将其低位与1做运算，如果值为1则表示低位为1，用res进行累加
         如果与运算为0，则表示低位为0
         然后让n右移一位，继续上面的步骤，直到n为0
* */
public class T15_hammingWeight {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        int res = 0;
        while (n != 0) {
            res += n & 1; //&
            n = n >>> 1;  //无符号 右移一位
        }
        return res;
    }
}